home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include "assert.h"
- #include "system.h"
- #include "emTypes.h"
- #include "sys/file.h"
-
- char assertMessage[] = "Assertion failed: file %s, line %d\n";
- #define FILENAME "/EC/OperationNames/Names"
-
- struct {
- int hashTableSize;
- int hashTableSizeInBytes;
- int charTableMaxSize;
- int charTableCurrentSize;
- OID nextOIDToAllocate;
- OID maxOIDToAllocate;
- } header;
-
- typedef int HashValue;
-
- typedef struct OpNameEntry {
- int offset; /* into charTable of the start of the string */
- OID id; /* what we want */
- } HashTableEntry;
-
- static HashTableEntry *hashTable;
- static char *charTable;
-
- void main()
- {
- int fd;
- char filename[256];
- strcpy(filename, EMDIR);
- strcat(filename, FILENAME);
- fd = open(filename, O_WRONLY, 0);
- assert (fd != -1);
- header.hashTableSize = 2;
- header.hashTableSizeInBytes = header.hashTableSize * sizeof(HashTableEntry);
- header.charTableMaxSize = 32;
- header.charTableCurrentSize = 0;
- header.nextOIDToAllocate = 0xff000100;
- header.maxOIDToAllocate = 0xfffffffe;
- hashTable = (HashTableEntry *) malloc(header.hashTableSizeInBytes);
- bzero(hashTable, header.hashTableSizeInBytes);
- charTable = malloc(header.charTableMaxSize);
- bzero(charTable, header.charTableMaxSize);
-
- assert(write(fd, &header, sizeof(header)) == sizeof(header));
- assert(write(fd, hashTable, header.hashTableSizeInBytes) == header.hashTableSizeInBytes);
- assert(write(fd, charTable, header.charTableMaxSize) == header.charTableMaxSize);
- close(fd);
- }
-